package com.im.service.projectInfo.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;

import com.im.service.dto.BusiConstParamVal;
import com.im.service.dto.ImplementProject;
import com.im.service.dto.ProjectStage;
import com.im.viewmodel.projectInfo.ProjProceSubmitListRespVo;

@Mapper
public interface IImplementProjQueryDAO {

	/**
	 * 实施项目分页查询 
	 * @param param
	 * @return 
	 * @author xuwb
	 */
	List<ImplementProject> queryImpleProjList(Map<String, Object> param);

	/**
	 * 实施项目查询
	 * @param param
	 * @return
	 * @author wangxh
	 */
	List<ImplementProject> queryAllImpleProjList(Map<String, Object> param);

	/**
	 *
	 * 实施项目详情查询
	 * @param param
	 * @return
	 * @author wangxh
	 */
	ImplementProject queryImpleProjDetail(Map<String,Object> param);

	ImplementProject queryImpleProjDetailByRelated(Map<String,Object> param);

	/**
	 * 
	 * 根据常量编码查询常量配置
	 * @param constCode
	 * @return 
	 */
	List<BusiConstParamVal> queryConstListByCode(String constCode);

	/**
	 * 查询实施项目设置的所需经历的阶段信息
	 * @param projStage
	 * @return
	 * @author xuwenbo
	 */
	List<ProjectStage> queryImpleProjStageList(ProjectStage projStage);

	List<ImplementProject> queryImpleDeclareSetList(Map<String, Object> param);
	
	/**
	 * 项目进度报送---列表查询
	 * @param param
	 * @return
	 * @author xuwenbo
	 */
	List<ProjProceSubmitListRespVo> queryProjProceSubmitList(Map<String, Object> param);

	/**
	 * 项目进度报送 --查询
	 * @param impleProjId
	 * @return
	 * @author xuwenbo
	 */
	int queryProjProceSubmitByImpleId(String impleProjId);

	/**
	 * 查询子项目
	 * @param param
	 * @return
	 * @author xuwenbo
	 */
	List<ImplementProject> querySubImpleProjList(Map<String, Object> param);

	/**
	 * 项目资金统计
	 * @param allList
	 * @return
	 * @author xuwenbo
	 */
	List<Map<String, Object>> queryImpleProjFoundSourceStats(List<ImplementProject> allList);

	List<Map<String, Object>> queryImpleProjCode(Map<String, Object> param);
	
	List<ProjectStage> queryImpleProjStageListForDocInfo(ProjectStage projStage);
}